本文是学习GB-T 25632-2010 快速成形软件数据接口. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们
本标准规定了快速成形软件的数据接口(以下简称"数据接口")的技术要求,包括快速成形软件数
据接口的输入文件、输出文件的内容和格式规范。
本标准适用于快速成形软件的数据接口。
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文
件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 11457—2006 信息技术 软件工程术语
GB/T 14896.7—2004 特种加工机床 术语 第7部分:快速成形机床
GB/T 11457—2006 和 GB/T 14896.7—2004
界定的以及下列术语和定义适用于本文件。
3.1
快速成形软件 rapid prototyping software
用于快速成形的应用软件。
3.2
数据接口 data interface
计算机软件系统之间传送数据、交换信息的接口,以电子文件的形式实现。
3.3
数据文件 data file
用于数据交换或处理的文件。
3.4
数据结构 data structure
软件数据接口所输出数据的内部构成,包含有若干个不同的数据元素。
3.5
层片 layer
层片是两个平行截面之间的空间区域,由它的厚度、
一系列的轮廓、网格限定。
3.6
轮廓线 contour line
轮廓线是层片内实体的边界线,以多义线定义。分为内轮廓和外轮廓,每个轮廓应封闭并且不和其
他轮廓相交,也没有自交。
3.7
多义线 polyline
多义线由平面上的一系列顶点(x,y) 定义,由按一定顺序排列的线段连接而成。
一条封闭的多义
GB/T 25632—2010
线也称为多边形。
3.8
网格线 meshline
网格线是一系列独立的线段,每条线段都由一个起点和一个终点定义,用于构成支撑或者填充
结构。
4.1.1 本标准规定的快速成形软件数据接口的输入文件均为 STL 文件,
一般有 ASCⅡ 和二进制两种
格式。
4.1.2 STL 文件是由多个三角形面片无序地排列集合在一起组成的,其 BNF
格式定义如下:
\<STL 文件>::=\<三角形1>\<三角形2>...\<三角形 n)
〈三角形〉::=\<法向量>\<顶点1>\<顶点2>\<顶点3>
\<法向量>::=\<1x>\<ly〉\<lz)
〈顶点>::=\<x>\<y>\<z)
4.2 ASCⅡ 码 STL 数据文件
第一行:说明行,80个字符;
第二行起:记录三角形,首先记录三角形面片的法向,然后记录环,依次给出三个顶点的坐标,三个
顶点的顺序与该三角形法向符合"右手法则"。这样一个三角形的信息记录完毕,开始记录下一个三角
形,直到将整个模型的全部三角形记录完毕,文件结束。例见附录 A。
solid〈name 〉 ——说明行,记录 STL 文件的文件名
facet normal nl n2 n3 ——记录三角形面片的法向,到 endfacet为止
outer loop ——记录三个顶点的坐标,到 endloop为止
vertex vlx vly vlz
vertex v2x v2y v2z
vertex v3x v3y v3z
endloop
endfacet
· ·
endsolid \<name> — 文件结束。
STL 文件的二进制格式是按字节存取的。其存储方式为:
前80个字节做说明用,紧跟着4个字节存放三角形的总数(长整型数),其后开始依次记录三角形
信息(法向量和三个顶点),法向量分量和顶点坐标值采用浮点数,每个数值占用4个字节。在每个三角
形信息记录完毕后,空两个字节,然后循环记录下一个三角形信息,直至将所有信息记录完毕,文件
结束。
STL 文件的二进制格式如下:
〈二进制 STL 文件结构>::=\<STL 文件实体名〉〈三角形面片总数 N>
\<三角形信息〉
\<STL 文件实体名>::=\<实体名占80字节,不足80字节补以空格>
〈三角形面片总数 N)::=\<4 字节长整型数>
GB/T 25632—2010
\<三角形信息>::=\<三角形法向矢量〉\<三角形顶点坐标〉\<空2字节〉\<三角形法向矢量>\<三角形顶
点坐标>〈空2字节>... ...
\<三角形法向矢量>::=\<1x,ly,lz三个浮点数,共占12字节〉
\<三角形顶点坐标>::=\<x1,y1,z1,x2,y2,z2,x3,y3,z3
九个浮点数,共占36字节〉
本标准规定的快速成形软件数据接口的输出文件均为 CLI 文件, 一般有 ASCⅡ
和二进制两种格
式。 ASCⅡ 格式参见附录 B。
ASCⅡ 文件分成几个部分。每部分由开始和结束标识标记。只对字符
A~Z、a~z、0~9、\$和分隔
符("/"、","、"//")作解释,所有其他的字符会被忽略。
每个文件应有一个文件头和一个几何描述部分,其他部分是可选择的。文件头作为文件开始的解
释,几何描述部分的结束作为文件的结束。
文件可以包括文件头之前和几何描述部分之后的部分,但这些内容会被忽略。
除注释外,所有的命令都有如下通式:
关键词/参数
关键词和参数由分隔符"/"分隔。如果没有参数就不应当有分隔符,唯一例外是命令"//"。
5.2.2.1 关键词
所有的关键词应为大写字符,每一个关键词应以字符"\$\$"开始。
5.2.2.2 参数
参数是由字符","(逗号)分隔的数字或 ASCⅡ 字符串。
整数:
±k1~kn:每个ki是0到9的数字。
负数应有一个减号,正数可以有加号。数字没有符号就作为正数。最大范围为±2³。
实数:
±x1~xn.yl~ym
n≥0,m≥0
1≤(n+m)≤16
xi,yi是0到9的数字,各自在小数点前后。
所有实数都需要小数点。
分隔符有"/"、","和"///"。
GB/T 25632—2010
ASCⅡ
字符串由双引号之间的任意长度的正确字符构成。正确字符是除了双引号之外的所有可打
印的字符。
5.3.1.1 注释
命令:注释
语法://文本//
双斜杠之间的文本作为注释,文本是可打印字符的集合,注释中不能有双斜杠。
5.3.1.2 结构
命令:文件头开始
语法:\$\$HEADERSTART
这个命令标志着文件头的开始,并且将作为数据的开始。
命令:文件头结束
语法:\$\$HEADEREND
这个命令标志着文件头的结束。
命令:几何描述部分开始
语法:\$\$GEOMETRYSTART
这个命令开始几何描述部分。
命令:几何描述部分结束
语法:\$\$GEOMETRYEND
这个命令结束几何描述部分,并且将作为数据的结束。
5.3.1.3 文件头信息
命令:几何描述部分数据格式为二进制
语法:\$\$BINARY
指出几何描述部分的数据是二进制的。
命令:几何描述部分数据格式为 ASCⅡ 码
语法:\$\$ASCⅡ
指出几何描述部分的数据格式是 ASCⅡ 码的。
命令:长度单位是 u[mm]
语法:\$\$UNITS/u
参数 u:实数,u 表示以毫米为坐标单位。
命令:版本是v
语法:\$\$VERSION/v
参数v:整数,v 除以100给出版本号。
例如:200 即指 Version 2.00
以下文件头命令是可选的:
命令:文件的建立日期
GB/T 25632—2010
语法:\$\$DATE/d
参数d:整数,将按 DDMMYY 的顺序解释。
命令:尺寸范围
语法:\$\$DIMENSION/xl,y1,z1,x2,y2,z2
参数
x1,y1,z1,x2,y2,z2:实数,描述实体在确定坐标系下的坐标极限和尺寸范围,单位为毫米。
应满足条件:x1\<x2,yl\<y2 和 zl\<z2。
命令:文件中层片数量为i
语法:\$\$ LAYERS/i
参数 i:整数,为该文件中层片的数量。
命令:几何描述部分数据对齐为32位(仅用于二进制的几何描述部分)
语法:\$\$ALIGN
将几何描述部分数据对齐为32位。几何描述部分数据应在32位的起始位置开始,文件头应在
32位的末尾结束。
命令:零件标签设定
语法:\$\$LABEL/id,Text
参数:
id:整数,定义一个文件内的多个模型。 id在多义线和网格线的起始部分。
Text:对零件做解释,ASCⅡ 字符串。
命令:用户特定数据放入文件头
语法:\$\$USERDATA/uid,len,user-data
参数:
uid:ASCⅡ字符串,用户标识符。
len:长整数,用户数据的长度。
user-data:数据内容(二进制或者 ASCⅡ); 长度是len 字节。
命令:开始层片
语法:\$\$ LAYER/z
参数 z:实数,层片的上表面高度,z×长度单位[单位为mm], 所有的层应按照z
值升序排列。层厚
由当前层和前一层的高度差值来确定。起始层的层厚可以通过包含一个有z
值、但无一条多义线的"零
层"来定义。
命令:开始多义线
语法:\$\$POLYLINE/id,dir,n,plx,ply,...pnx,pny
参数:
id:整数,定义一个文件内的多个模型,参考命令"零件标签设定"。
dir:整数,定义线段的方向(从z
的负方向看),0为顺时针方向(内部),1为逆时针方向(外部),2为
开环线段(非实体)。
n:整数,点数,即多义线上的顶点数量。
plx,ply,..pnx,pny: 实数,点1到点n
的坐标。内轮廓的多义线方向应为顺时针方向,外轮廓的
多义线方向应为逆时针方向。参数
dir和多义线上点的顺序应一致。如果有错误,将按 dir的值重写点
的顺序。对于封闭的多义线,plx=pnx,ply=pny。
命令:开始网格线
语法:\$\$ HATCHES/id,n,plsx,plsy,plex,pley,...
GB/T 25632—2010
参数:
id:整数,定义一个文件内的多个模型,参考命令"零件标签设定"。
n:整数,网格线的线段数量(n×4= 数据的数量)。
plsx,plsy,plex,pley,...pnex,pney: 实数,网格线1...n
的端点数据,每条网格线有4个参数
(startx,starty,endx,endy)。
二进制数据文件分成两部分:文件头用 ASCⅡ
码格式,几何描述部分用二进制格式。
文件头的起始为文件的开始。
几何描述部分的结尾将为文件的结束。
文件头的结尾应以\$\$HEADEREND 作为结束。
几何描述部分应直接跟在报头之后(直接跟在命令\$\$HEADEREND
之后),不要有任何的其他数
据(如回车、换行等)。
所有的命令有如下通式:
命令索引 pl p2 ... pn
在命令索引和参数之间没有分隔符,在各参数之间也没有分隔符。
5.4.2.1 **命令索引(CI
命令索引是一个无符号整数标志命令。
5.4.2.2 参数
参数 pl...pn 是按照表1说明的数字。
数据按表1的规定。
表 1 数据格式
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
二进制数据格式仅包含几何命令
命令:长整数层片开始
CI,z
CI 为127。
参数 z:实数,层片的上表面高度,z×长度单位[单位为 mm],
所有的层应按照z 值升序排列。层厚
由当前层和前一层的高度差值来确定。起始层的层厚可以通过包含一个有z
值、但无一条多义线的"零
层"来定义。
GB/T 25632—2010
命令:无符号整数层片开始
CI,z
CI 为128。
参数 z:无符号整数,层片的上表面高度,z×长度单位[单位为 mm],
所有的层应按照 z 值升序排
列。层厚由当前层和前一层的高度差值来确定。起始层的层厚可以通过包含一个有
z 值、但无一条多
义线的“零层”来定义。
命令:无符号整数多义线开始
CI,id,dir,n,plx,ply,...pnx,pny
CI 为129。
参数:
id:无符号整数,定义一个文件内的多个模型,参考命令"零件标签设定"。
dir,无符号整数,定义线段的方向(从z
的负方向看),0为顺时针方向(内部),1为逆时针方向(外
部),2为开环线段(非实体)。
n:无符号整数,点数,多义线上的顶点数量。
plx,ply,...pnx,pny: 无符号整数,点1到点n
的坐标。内轮廓的多义线方向应为顺时针方向,外
轮廓的多义线方向应为逆时针方向。参数dir和多义线上点的顺序应一致。如果有错误,将按
dir 的值
重写点的顺序。对于封闭的多义线,plx=pnx,ply=pny。
命令:长整数多义线开始
CI,id,dir,n,plx,ply,...pnx,pny
CI 为130。
参数:
id:长整数,定义一个文件内的多个模型,参考命令"零件标签设定"。
dir,长整数,定义线段的方向(从z
的负方向看),0为顺时针方向(内部),1为逆时针方向(外部),
2为开环线段(非实体)。
n:长整数,点数,即多义线上的顶点数量。
plx,ply,..pnx,pny: 实数,点1到点n
的坐标。内轮廓的多义线方向应为顺时针方向,外轮廓的
多义线方向应为逆时针方向。参数dir和多义线上点的顺序应一致。如果有错误,将按
dir 的值重写点
的顺序。对于封闭的多义线,plx=pnx,ply=pny。
命令:无符号整数网格线开始
CI,id,n,plsx,plsy,plex,pley,...pnex,pney
CI 为131。
参数:
id:无符号整数,定义一个文件内的多个模型,参考命令"零件标签设定"。
n:无符号整数,网格线的线段数量(n×4= 数据的数量)。
plsx,plsy,plex,pley,...pnex,pney:无符号整数,网格线1...n
的端点数据,每条网格线有4个
参数(startx,starty,endx,endy)
命令:长整数网格线开始
CI,id,n,plsx,plsy,plex,pley,... pnex,pney
CI 为132。
参数:
id:长整数,定义一个文件内的多个模型,参考命令"零件标签设定"。
n:长整数,网格线的线段数量(n×4= 数据的数量)。
plsx,plsy,plex,pley,...pnex,pney:实数,网格线1...n
的端点数据,每条网格线有4个参数
(startx,starty,endx,endy)。
GB/T 25632—2010
(资料性附录)
ASCⅡ码 STL 文件示例
Solid Example Object
facet normal
0.0000000.0000001.000000
outer loop
vertex 30.00000010.00000045,000000
vertex
30.00000030.00000045.000000
vertex
10.00000030.00000045.000000
endloop
endfacet
facet normal 0.0000001.0000000,000000
outer loop
vertex
vertex
vertex
endloop
endfacet
30.00000030.00000025,000000
10.00000030.00000025.000000
10.00000030.00000045.000000
facet normal
1.0000000.0000000.000000
outer loop
vertex | |
---|---|
vertex | |
vertex |
endloop
endfacet
endsolid Example Object
GB/T 25632—2010
(资料性附录)
ASCⅡ 码 CLI 文件示例
\$\$ HEADERSTART
// This is a example for the use of the Layer Format //
\$\$ ASCⅡ
\$\$UNITS/1 // all coordinates are given in mm //
//\$\$UNITS/0.01 all coordinates are given in units 0.01 mm //
\$\$DATE/070493 // 7. April 1993 //
\$\$LAYERS/100 // 100 layers //
\$\$ HEADEREND
\$\$GEOMETRYSTART // start of GEOMETRY-section//
\$\$LAYER/5.5 // Layer at height z=5.5 mm//
\$\$POLYLINE/0,0,5,1.00,2.02,3.30,3.42,5.23,5.01,1.57,5.6,1.00,2.02
\$\$HATCHES/0,2,10.2,10.4,12.34,12.5,8.8,9.3,15.7,13.2
\$\$POLYLINE/0,1,10,1.2,4.01,...........
\$\$LAYER/5.6
\$\$POLYLINE/0,0,200,10.23,12.34...........................
·
\$\$LAYER/15.5
\$\$POLYLINE/0,0,200,13.23,12.34,..........................
· ·
\$\$GEOMETRYEND
style="width:3.08656in" />GB/T 25632—2010
更多内容 可以 GB-T 25632-2010 快速成形软件数据接口. 进一步学习